home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / etc / init.d / modules < prev    next >
Text File  |  2006-04-25  |  2KB  |  113 lines

  1. #!/sbin/runscript
  2. # Copyright 1999-2005 Gentoo Foundation
  3. # Distributed under the terms of the GNU General Public License v2
  4.  
  5. depend() {
  6.     need checkroot hostname
  7.     use isapnp
  8. }
  9.  
  10. load_modules() {
  11.     local x=
  12.     local i=0
  13.     local retval=0
  14.     local modules=
  15.     local modargs=
  16.     local modcount=0
  17.     local config="$1"
  18.  
  19.     [ -z "${config}" ] && return 0
  20.     [ ! -r "${config}" ] && return 0
  21.  
  22.     # Loop over every line in $config
  23.     eval $(awk '
  24.         BEGIN {
  25.             COUNT = 0 # Make sure COUNT is set
  26.         }
  27.  
  28.         $0 !~ /(^[[:space:]]*(#|$))/ {
  29.             if (MODULES == "")
  30.                 MODULES = $1
  31.             else
  32.                 MODULES = MODULES " " $1
  33.             
  34.             # Not the greatest method to remove $1 from $0, but it works
  35.             sub(/^[[:space:]]*[^[:space:]]*[[:space:]]*/, "")
  36.             ARGS[COUNT] = $0
  37.             COUNT++
  38.         }
  39.         
  40.         END {
  41.             # 'eval' will make sure these are set to proper bash variables
  42.             print "modcount=" COUNT
  43.             print "modules=\"" MODULES "\""
  44.             for (x = 0;x < COUNT;x++)
  45.                 print "modargs[" x "]=\"" ARGS[x] "\""
  46.         }
  47.     ' "${config}")
  48.  
  49.     if [ "${modcount}" -gt 0 ]
  50.     then
  51.         einfo "Using ${config} as config:"
  52.         
  53.         for x in ${modules}
  54.         do
  55.             ebegin "  Loading module ${x}"
  56.             modprobe -q ${x} ${modargs[${i}]} &>/dev/null
  57.             retval=$?
  58.             eend ${retval} "  Failed to load ${x}"
  59.             
  60.             i=$((i+1))
  61.             [ "${retval}" -eq 0 ] || modcount=$((modcount-1))
  62.         done
  63.  
  64.         einfo "Autoloaded ${modcount} module(s)"
  65.     fi
  66.  
  67.     return 0
  68. }
  69.  
  70. start() {
  71.     local KV=$(uname -r)
  72.     local KV_MAJOR=$(KV_major "${KV}")
  73.     local KV_MINOR=$(KV_minor "${KV}")
  74.     local KV_MICRO=$(KV_micro "${KV}")
  75.  
  76.     # Should not fail if kernel do not have module
  77.     # support compiled in ...
  78.     [ -f /proc/modules ] || return 0
  79.  
  80.     if [ -z "${CDBOOT}" ] && touch /etc/modules.conf 2> /dev/null
  81.     then
  82.         ebegin "Calculating module dependencies"
  83.         /sbin/modules-update
  84.         eend $? "Failed to calculate module dependencies"
  85.     fi
  86.  
  87.     local autoload=""
  88.     if [[ -f /etc/modules.autoload && ! -L /etc/modules.autoload ]]; then
  89.         autoload=/etc/modules.autoload
  90.     else
  91.         local x
  92.         for x in "${KV}" ${KV_MAJOR}.${KV_MINOR}.${KV_MICRO} ${KV_MAJOR}.${KV_MINOR} ; do
  93.             if [[ -f /etc/modules.autoload.d/kernel-"${x}" ]] ; then
  94.                 autoload="/etc/modules.autoload.d/kernel-${x}"
  95.                 break
  96.             fi
  97.         done
  98.     fi
  99.     [[ -n ${autoload} ]] && load_modules "${autoload}"
  100.  
  101.     #
  102.     # Just in case a sysadmin prefers generic symbolic links in
  103.     # /lib/modules/boot for boot time modules we will load these modules
  104.     #
  105.     if [ -n "$(modprobe -l -t boot)" ]
  106.     then
  107.         modprobe -a -t boot \*  &>/dev/null
  108.     fi
  109. }
  110.  
  111.  
  112. # vim:ts=4
  113.